package com.hb.software.dao;


import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BaseDao<T, PK> {
    /**
     * 保存
     *
     * @param t
     */

    void save(T t);

    /**
     * 修改
     *
     * @param t
     */
    void update(T t);

    /**
     * 删除
     *
     * @param k
     */
    void delete(long k);

    /**
     * 删除所有记录
     */
    void deleteAll();

    /**
     * 通过id查询
     *
     * @param k
     * @return T
     */
    T findOne(long k);

    /**
     * 获取所有记录
     *
     * @return list
     */
    List<T> findAll();

    /**
     * 获取记录数量
     *
     * @return
     */
    long selectCount();

    /**
     * 获取最后一条记录id
     *
     * @return
     */
    long findLastId();

    /**
     * 获取20条记录
     *
     * @param begin
     * @param fin
     * @return
     */
    List<T> findList(long begin, long fin);

    /**
     * 分页
     *
     * @return
     */
    Long findTotals();

    List<T> findByPage(@Param("pageNow") Integer pageNow, @Param("pageSize") Integer pageSize);

}
